package com.radar.io.radar346.DataType;

import com.radar.io.radar346.Product382改;
import com.radar.utils.BitConverter;

public class OHPParse {

    Product382改 _this;

    public OHPParse(Product382改 product382改) {
        _this = product382改;
    }

    public void parse(byte[] bytes, int index) {
        int 一小时体扫个数 = BitConverter.toInt32(bytes, index);
        index += 4;
        float a = BitConverter.toSingle(bytes, index);
        index += 4;
        float b = BitConverter.toSingle(bytes, index);
        index += 4;
        float 计算时选取的OHP窗口大小 = BitConverter.toSingle(bytes, index);
        index += 4;
        int 径向上最大窗口数 = BitConverter.toInt32(bytes, index);
        index += 4;
        int 当前探测范围内最大一小时降水 = (int) BitConverter.toSingle(bytes, index);
        index += 4;
        float[][] 第一象限数据 = new float[径向上最大窗口数][径向上最大窗口数];
        float[][] 第四象限数据 = new float[径向上最大窗口数][径向上最大窗口数];
        float[][] 第三象限数据 = new float[径向上最大窗口数][径向上最大窗口数];
        float[][] 第二象限数据 = new float[径向上最大窗口数][径向上最大窗口数];
        _this.data = new double[径向上最大窗口数 * 2][径向上最大窗口数 * 2];

        for (int ii = 0; ii < 径向上最大窗口数; ii++) {
            for (int jj = 0; jj < 径向上最大窗口数; jj++) {
                第一象限数据[ii][jj] = BitConverter.toSingle(bytes, index);
                第四象限数据[ii][jj] = BitConverter.toSingle(bytes, index + 径向上最大窗口数 * 径向上最大窗口数 * 4);
                第三象限数据[ii][jj] = BitConverter.toSingle(bytes, index + 径向上最大窗口数 * 径向上最大窗口数 * 8);
                第二象限数据[ii][jj] = BitConverter.toSingle(bytes, index + 径向上最大窗口数 * 径向上最大窗口数 * 12);
                index += 4;
            }
        }
        for (int ii = 0; ii < 径向上最大窗口数; ii++) {
            for (int jj = 0; jj < 径向上最大窗口数; jj++) {
                _this.data[ii][jj] = 第四象限数据[径向上最大窗口数 - 1 - ii][径向上最大窗口数 - 1 - jj];
                _this.data[ii + 径向上最大窗口数][jj] = 第三象限数据[ii][径向上最大窗口数 - 1 - jj];
                _this.data[ii + 径向上最大窗口数][jj + 径向上最大窗口数] = 第二象限数据[ii][jj];
                _this.data[ii][jj + 径向上最大窗口数] = 第一象限数据[径向上最大窗口数 - 1 - ii][jj];
            }
        }
    }
}
